package dlock

import (
	"context"
	"fmt"
	redislock "github.com/jefferyjob/go-redislock"
	"github.com/redis/go-redis/v9"
	"go-redis/keys"
)

func LockExample() {
	// 创建 Redis 客户端
	redisClient := redis.NewClient(&redis.Options{Addr: "localhost:6379", Password: "", DB: 0})
	// 创建一个上下文，用于取消锁操作
	ctx := context.Background()
	// 创建 RedisLock 对象  10秒超时
	//lock := redislock.New(ctx, redisClient, keys.GegLockKey("test_key"), redislock.WithTimeout(time.Duration(10)*time.Second))
	// 自动续期
	lock := redislock.New(ctx, redisClient, keys.GegLockKey("test_key"), redislock.WithAutoRenew())
	// 获取锁
	err := lock.Lock()
	if err != nil {
		fmt.Println("锁获取失败：", err)
		return
	}
	defer lock.UnLock() // 解锁
	// 在锁定期间执行任务
	//...
	fmt.Println("任务执行完成")
}
